#include "sys_str.h"

int str_user_msg(const char *input, char *username, char *msg)
{
    char str[BUFFER_SIZE];            // 用于存储输入字符串
    strncpy(str, input, BUFFER_SIZE); // 复制输入字符串，避免缓冲区溢出
    // 使用 strtok() 按 '_' 分割字符串
    char *token;
    char *last = NULL;        // 用于存储最后一个部分
    char *second_last = NULL; // 用于存储倒数第二个部分

    // 分割字符串
    token = strtok(str, "_");
    while (token != NULL)
    {
        second_last = last;        // 更新倒数第二个部分
        last = token;              // 更新最后一个部分
        token = strtok(NULL, "_"); // 获取下一个子字符串
    }

    // 将最后两个部分存储到变量中
    if (last != NULL)
    {
        strcpy(msg, last); // 存储最后一个部分
    }
    if (second_last != NULL)
    {
        strcpy(username, second_last); // 存储倒数第二个部分
    }
    return 0;
}

int str_set_mode(const char *input, char *mode,char *mode2, char *temp)
{
    char str[BUFFER_SIZE];
    strcpy(str, input);

    // 定义变量来存储分离出的部分
    char mode_data[256], mode2_data[256], temp_data[256];

    // 使用 strtok() 按 '_' 分割字符串
    char *token = strtok(str, "_");
    if (token != NULL)
    {
        strcpy(mode_data, token); // 存储第一个部分
        token = strtok(NULL, "_");
    }
    if (token != NULL)
    {
        strcpy(mode2_data, token); // 存储第二个部分
        token = strtok(NULL, "_");
    }
    if (token != NULL)
    {
        strcpy(temp_data, token); // 存储第三个部分
    }

    // 打印结果
    printf("mode :  %s\n", mode_data);
    printf("mode : %s\n", mode2_data);
    printf("username : %s\n", temp_data);

    strcpy(mode, mode_data);
    strcpy(mode2, mode2_data);
    strcpy(temp, temp_data);

    return 0;
}
